This document describes the document format used by Iceberg for Projects.
Discussion:
Iceberg's document are PropertyList file. Their content can be edited outside Iceberg using a text editor or the PropertyList Editor.app
application.
An Iceberg's document is structured as the Packages & Metapackages outline view is displaying it.
Project
|
The first level of the hierarchy describes the Project object.
Discussion:
The Name
token is currently only used to have a name for the root object of Packages and Metapackages hierarchy.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Hierarchy</key> <dict> </dict> <key>Name</key> <string>Project</string> <key>Settings</key> <dict> </dict> </dict> </plist> |
|
This dictionary contains the settings of the Project. They can be set via the Project Settings
pane in Iceberg.
N/A
Template:
<key>10.1 Compatibility</key> <true/> <key>Build Path</key> <string>build</string> <key>Build Path Type</key> <integer>2</integer> <key>Comment</key> <string></string> <key>Remove .DS_Store</key> <true/> <key>Remove .pbdevelopment</key> <true/> <key>Remove CVS</key> <false/> |
|
This dictionary describes either a Package or a Metapackage. The root item of the project hierarchy is also a component.
Discussion:
<key>Attributes</key> <dict> </dict> <key>IFPkgFlagPackageSelection</key> <integer>0</integer> <key>Name</key> <string>Iceberg</string> <key>Status</key> <integer>1</integer> <key>Type</key> <integer>1</integer> |
|
This dictionary describes the attributes of a component.
Discussion:There can be 2 templates of attributes depending on the component type.
Package
<key>Files</key> <dict> </dict> <key>Documents</key> <dict> </dict> <key>Scripts</key> <dict> </dict> <key>Settings</key> <dict> </dict> |
<key>Components</key> <dict> </dict> <key>Documents</key> <dict> </dict> <key>Scripts</key> <dict> </dict> <key>Settings</key> <dict> </dict> |
|
This dictionary describes which files the file archive of the package will contain and the options used to create the archive.
Discussion:
The IFPkgFlagDefaultLocation
token needs to point to a folder in the file hierarchy when the package is not an imported package.
The Split Fork operation is made via the /Developer/Tools/SplitForks
tool.
<key>Compress</key> <true/> <key>Hierarchy</key> <dict> </dict> <key>IFPkgFlagDefaultLocation</key> <string>/</string> <key>Imported Package</key> <false/> <key>Package Path</key> <string></string> <key>Split Forks</key> <true/> |
|
This dictionary describes a file object from the hierarchy of files.
Discussion:
<key>Children</key> <array/> <key>GID</key> <integer>80</integer> <key>Path</key> <string>Utilities</string> <key>Path Type</key> <integer>0</integer> <key>Privileges</key> <integer>509</integer> <key>Type</key> <integer>1</integer> <key>UID</key> <integer>0</integer> |
|
This dictionary describes a search rule for a file item.
Discussion:Search rules are used to create the TokenDefinitions.plist file and the IFPkgPathMappings array for the Info.plist. Search Rules allows you to specify where the installer should look for previous version of a file/bundle.
Templates:
<key>Status</key> <true/> <key>Name</key> <string>Untitled Rule</string> <key>Settings</key> <dict> </dict> |
|
This dictionary describes the settings of a search rule.
Discussion:There are 5 kinds of search rules:
CheckPath
CommonAppSearch
LaunchServicesLookup
BundleIdentifierSearch
BundleVersionFilter
|
This dictionary describes all the documents which will be used to customize Installer.app
when the package or metapackage are installed.
N/A
Templates:
<key>Background Image</key> <dict> </dict> <key>License</key> <dict> </dict> <key>ReadMe</key> <dict> </dict> <key>Welcome</key> <dict> </dict> |
|
This dictionary describes how and if a custom background image is displayed in Installer.app
when the package or metapackage is installed.
The background image will only be displayed if the package or metapackage are not installed as parts of a metapackage.
Templates:
<key>IFPkgFlagBackgroundAlignment</key> <integer>4</integer> <key>IFPkgFlagBackgroundScaling</key> <integer>1</integer> <key>Mode</key> <integer>0</integer> <key>Path</key> <string></string> <key>Path Type</key> <integer>1</integer> |
|
This dictionary describes if a license needs to be displayed in Installer.app
when the package or metapackage are installed.
The license(s) will only be displayed if the package or metapackage are not installed as parts of a metapackage.
Templates:
<key>International</key> <dict> <key>Keywords</key> <dict/> <key>Mode</key> <integer>0</integer> <key>Path</key> <string></string> <key>Path Type</key> <integer>1</integer> <key>Template</key> <string></string> </dict> |
|
This dictionary describes if a ReadMe needs to be displayed in Installer.app
when the package or metapackage are installed.
The ReadMe will only be displayed if the package or metapackage are not installed as parts of a metapackage.
Templates:
<key>International</key> <dict> <key>Mode</key> <integer>0</integer> <key>Path</key> <string></string> <key>Path Type</key> <integer>1</integer> </dict> |
|
This dictionary describes whether a custom Welcome needs to be displayed or the default one needs to be used.
Discussion:A custom Welcome will only be displayed if the package or metapackage are not installed as parts of a metapackage.
Templates:
<key>International</key> <dict> <key>Mode</key> <integer>0</integer> <key>Path</key> <string></string> <key>Path Type</key> <integer>1</integer> </dict> |
|
This dictionary describes the scripts that will be use to customize the installation process and the additional resources used for this.
Discussion:The Requirements won't be used for OS versions prior to 10.3.
Templates:Package
<dict> <key>Additional Resources</key> <dict> </dict> <key>Installation Scripts</key> <dict> </dict> <key>Requirements</key> <array> </array> </dict> /PRE> |
|
This dictionary describes the additional resources which needs to be added to the Resources folder of the package or metapackage.
Discussion:
To add VolumeCheck
or InstallationCheck
scripts to a package,
you need to add them as Additional Resources.
<key>International</key> <array> <dict> <key>Path</key> <string>/Users/stephane/Desktop/SomeFile.txt</string> <key>Path Type</key> <integer>1</integer> <key>Status</key> <true/> </dict> </array> |
|
This dictionary describes which and if installation scripts are to be used for the package or metapackage.
Discussion:
The InstallationCheck
and VolumeCheck
scripts are not listed here. These 2 scripts are probably going to be deprecated and be completely replaced by "Requirements" attributes. To add VolumeCheck
or InstallationCheck
scripts to a package,
you need to add them as Additional Resources.
<key>IFInstallationScriptsPostflight</key> <dict> <key>Path</key> <string></string> <key>Path Type</key> <integer>1</integer> <key>Status</key> <false/> </dict> <key>IFInstallationScriptsPostinstall</key> <dict> <key>Path</key> <string></string> <key>Path Type</key> <integer>1</integer> <key>Status</key> <false/> </dict> <key>IFInstallationScriptsPostupgrade</key> <dict> <key>Path</key> <string></string> <key>Path Type</key> <integer>1</integer> <key>Status</key> <false/> </dict> <key>IFInstallationScriptsPreflight</key> <dict> <key>Path</key> <string></string> <key>Path Type</key> <integer>1</integer> <key>Status</key> <false/> </dict> <key>IFInstallationScriptsPreinstall</key> <dict> <key>Path</key> <string></string> <key>Path Type</key> <integer>1</integer> <key>Status</key> <false/> </dict> <key>IFInstallationScriptsPreupgrade</key> <dict> <key>Path</key> <string></string> <key>Path Type</key> <integer>1</integer> <key>Status</key> <false/> </dict> |
|
This dictionary describes the installation requirements or recommendations of the component.
Discussion:The requirements mechanism is only available on Mac OS X 10.3 and later.
Templates:
<dict> <key>AlertDialog</key> <dict> <key>International</key> <dict> <key>MessageKey</key> <string>Version is too old</string> <key>TitleKey</key> <string>Incorrect version</string> </dict> </dict> <key>LabelKey</key> <string>Sample requirement</string> <key>Level</key> <integer>0</integer> <key>SpecArgument</key> <string>fr.whitebox.pkg.iceberg</string> <key>SpecProperty</key> <string>IFMajorVersion</string> <key>SpecTag</key> <integer>4</integer> <key>SpecType</key> <string>package</string> <key>Status</key> <true/> <key>TestObject</key> <integer>10</integer> <key>TestOperator</key> <string>>=</string> </dict> |
|
This dictionary describes the settings related to information displayed in the Finder Info window and in Installer.app
when the component is installed.
There are 2 possible formats depending on whether the component is a package or a metapackage. Metapackages don't have Options
.
Package
<key>Description</key> <dict> </dict> <key>Display Information</key> <dict> </dict> <key>Options</key> <dict> </dict> <key>Version</key> <dict> </dict> |
<key>Description</key> <dict> </dict> <key>Display Information</key> <dict> </dict> <key>Version</key> <dict> </dict> |
|
This dictionary is used to build the .info file or Description.plist file for a package or metapackage.
Discussion:
The IFPkgDescriptionVersion
and IFPkgDescriptionDeleteWarning
are still not used by Installer.app
.
<key>International</key> <dict> <key>IFPkgDescriptionDeleteWarning</key> <string></string> <key>IFPkgDescriptionDescription</key> <string></string> <key>IFPkgDescriptionTitle</key> <string>Iceberg</string> <key>IFPkgDescriptionVersion</key> <string>1.0</string> </dict> |
|
This dictionary describes information displayed in the Finder Information window and in the Finder.
Discussion:N/A
Template:
<key>CFBundleGetInfoString</key> <string>Iceberg 1.0 Copyrights (c) 2004 Stéphane Sudre</string> <key>CFBundleIdentifier</key> <string>fr.whitebox.pkg.Iceberg</string> <key>CFBundleName</key> <string>Iceberg</string> <key>CFBundleShortVersionString</key> <string>1.0</string> <key>CFBundleIconFile</key> <string></string> <key>CFBundleIconFile Path Type</key> <integer><1/integer> |
|
This dictionary describes the options for a Package.
Discussion:As most of the options are not supported by Mac OS X 10.1, Iceberg will try to set the most appropriate options when it builds 10.1 compatible packages.
Template:
<key>IFPkgFlagAllowBackRev</key> <false/> <key>IFPkgFlagAuthorizationAction</key> <integer>2</integer> <key>IFPkgFlagFollowLinks</key> <false/> <key>IFPkgFlagInstallFat</key> <false/> <key>IFPkgFlagIsRequired</key> <false/> <key>IFPkgFlagOverwritePermissions</key> <false/> <key>IFPkgFlagRelocatable</key> <false/> <key>IFPkgFlagRestartAction</key> <integer>0</integer> <key>IFPkgFlagRootVolumeOnly</key> <true/> <key>IFPkgFlagUpdateInstalledLanguages</key> <false/> |
|
This dictionary describes the major and minor versions of the package or metapackage.
DiscussionStarting with Mac OS X 10.3, if you have a required package in a metapackage and you're installing the same metapackage and you switch to custom installation mode, the required metapackage can be disabled. Increasing the package version will insure the package to be required again.
Template
<key>IFMajorVersion</key> <integer>1</integer> <key>IFMinorVersion</key> <integer>0</integer> |
|